package com.umariana.ClinicaVeterinaria.InterfazGrafica;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;


import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import com.umariana.ClinicaVeterinaria.mundo.Mascotas;
import com.umariana.ClinicaVeterinaria.mundo.Propietario;

public class DialogoListaMascotas extends JDialog implements KeyListener , ActionListener {

	/**
	 * serializable
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * panel de contenido  del dialogo lista mascotas
	 */
	private final JPanel contentPanel = new JPanel();
	/**
	 * comando para buscar una mascota
	 */
	private final static String BUSCAR = "BUSCAR";
	/**
	 * campo de texto para la identificacion de la mascota
	 */
	private JTextField txtNombre;
	/**
	 * tabla de la lista de mascotas
	 */
	private JTable tablaListaMascotas;
	/**
	 * relacion con la interfaz principal
	 */
	private InterfazClinica principal;
	


	public DialogoListaMascotas(InterfazClinica ventana )
	{
		
		super(ventana,true);
		principal=ventana;
		
		setTitle("Lista de mascotas");
		setBounds(100, 100, 600, 480);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);
		
		JLabel lblNombre = new JLabel("Nombre: ");
		lblNombre.setBounds(10, 11, 97, 14);
		contentPanel.add(lblNombre);
		
		txtNombre = new JTextField();
		txtNombre.addKeyListener(this);
		txtNombre.setBounds(117, 8, 162, 20);
		contentPanel.add(txtNombre);
		txtNombre.setColumns(10);
		
		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.setActionCommand(BUSCAR);
		btnBuscar.addActionListener(this);
		btnBuscar.setBounds(289, 7, 89, 23);
		contentPanel.add(btnBuscar);
		
		JScrollPane scrollPaneListaMascotas = new JScrollPane();
		scrollPaneListaMascotas.setBounds(10, 48, 564, 383);
		contentPanel.add(scrollPaneListaMascotas);
		
		tablaListaMascotas = new JTable();
		scrollPaneListaMascotas.setViewportView(tablaListaMascotas);
		
		actualizarDatosTablaMascotas();
	}


	
	/**
	 * Actualiza los datos de las macotas
	 */
	public void actualizarDatosTablaMascotas()
	{
		ArrayList<Propietario> listaPropietarios = principal.darListaDePropietarios();
		String[] encabesados = {"Identificacion" , "Nombre" ,"Edad","Especie","Raza"};
		DefaultTableModel modeloTabla = new DefaultTableModel(encabesados, 0);
		
		for (int i = 0; i < listaPropietarios.size(); i++) 
		{
			Propietario miPropietario = listaPropietarios.get(i);
			for (int j = 0; j < miPropietario.getMascotas().size(); j++) 
			{
				Mascotas miMascota = miPropietario.getMascotas().get(j);
				String[] contenido = {miPropietario.getIdentificacion(),miMascota.getNombre(),miMascota.getEdad()+"",miMascota.getEspecie(),miMascota.getRaza()};
				modeloTabla.addRow(contenido);
				
			}
			
			
			
		}
		
		tablaListaMascotas.setModel(modeloTabla);
		
		
	}
	
	
	/**
	 * busca el propietario y lo selecciona
	 */
	public void buscarMascota()
	{
		String ele = txtNombre.getText();
		 
	    for (int i = 0; i < tablaListaMascotas.getRowCount(); i++) {
	    		
	           if (tablaListaMascotas.getValueAt(i, 1).toString().equalsIgnoreCase(ele)) {                                           
	        	   tablaListaMascotas.changeSelection(i, 1, false, false);
	                  break;
	           }
	    }
	}

	@Override
	public void actionPerformed(ActionEvent e) {
	
		if(e.getActionCommand().equals(BUSCAR))
		{
			buscarMascota();
		}
	
	}



	@SuppressWarnings("static-access")
	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getComponent().equals(txtNombre))
		{
		if(e.getKeyCode()==e.VK_ENTER)
		{
			buscarMascota();
		}
		}
	}



	@Override
	public void keyReleased(KeyEvent e) {
		
		
	}



	@Override
	public void keyTyped(KeyEvent e) {
		if(e.getComponent().equals(txtNombre))
		{
			char car =e.getKeyChar();
			if(car >= '0' && car <='9') e.consume();
		}
		
	}
	
	
	
}
